Abstractions for asynchronous programming.
This crate provides a number of core abstractions for writing asynchronous
code:
- [Futures](crate::future::Future) are single eventual values produced by
asynchronous computations. Some programming languages (e.g. JavaScript)
call this concept "promise".
- [Streams](crate::stream::Stream) represent a series of values
produced asynchronously.
- [Sinks](crate::sink::Sink) provide support for asynchronous writing of
data.
- [Executors](crate::executor) are responsible for running asynchronous
tasks.
The crate also contains abstractions for [asynchronous I/O](crate::io) and
[cross-task communication](crate::channel).
Underlying all of this is the *task system*, which is a form of lightweight
threading. Large asynchronous computations are built up using futures,
streams and sinks, and then spawned as independent tasks that are run to
completion, but *do not block* the thread running them.